# 创建列表
arr = [1, 2, 3, 4, 5]
# 通过下标访问元素
print(arr[0],arr[4])
# 数组长度
print("数组长度",len(arr))
# 遍历数组
print("第一种方式遍历")
for i in arr:
    print(i,end = " ")
print()
print("第二种方式遍历")
for i in range(len(arr)):
    print(arr[i],end = " ")
print()
# 修改元素
arr[0] = 100
print("修改第一个元素",arr)
# 数组翻转
arr.reverse()
print("翻转后",arr)
# 数组排序
arr.sort()
print("升序",arr)
arr.sort(reverse=True)
print("降序",arr)
# 添加元素
arr.append(6)
print("在末尾添加一个元素",arr)
# 删除元素,入参是下标
del arr[0]
print("删除第一个元素",arr)
# 删除值为4的元素,删除首次出现的指定元素，如元素不存在，会报错
arr.remove(4)
print("删除值为4的元素",arr)
# 删除最后一个元素
arr.pop()
print("删除最后一个元素",arr)
# 删除索引为2的元素
midDel = arr.pop(2)
print("删除索引为2的元素",arr,"被删除的值是:",midDel)
# 清空数组
arr.clear()
print("清空数组",arr)

arr = [1,5,3,7,6]
b=sorted(arr) # 不改变原数组
print("arr升序",b)
b=sorted(arr,reverse=True)
print("arr降序",b)

# 判断是否为空
print("判断是否为空",arr==[])
print("判断是否为空",[]==[])

# 求极值求和
print("最大值",max(arr))
print("最小值",min(arr))
print("和",sum(arr))

# 数组去重
arr = [1,2,3,4,5,6,7,8,9,10,10,10,10]
print("去重后",list(set(arr))) #先通过 set() 去除 arr 列表中的重复项，然后再用 list() 将其转换成一个新的列表

# 判断是否存在数组中
print("2是否存在数组中",2 in arr)
# 找下标
print("10在数组中的下标",arr.index(10)) # 如果传一个不存在的元素，会报错
print("原始列表:",arr)
# 取列表后2个元素
print("最后两个元素:",arr[-2:])
# 取列表前2个元素
print("前两个元素:",arr[:2])
# 取列表除最后两个元素之外的元素
print("除最后两个元素之外的元素:",arr[:-2])
# 从第2个元素开始取
print("从第2个元素开始取:",arr[2:])
print("从第2个元素开始取到倒数第2个元素:",arr[2:-2])
print("提取整个列表:",arr[:])
print("带步长提取:",arr[1:6:2])
print("带步长为-1,即倒序:",arr[::-1])
# 列表拼接
print("列表拼接",arr+[11,12,13])
print("列表重复3次:",arr*3)
print("列表翻转:",arr[::-1])
# 列表推导式
print("取所奇数：",[arr[i] for i in range(len(arr)) if arr[i]%2==1])
print("取所偶数：",[arr[i] for i in range(len(arr)) if arr[i]%2==0])
# 学生成绩统计
def score():
    b=int(input("请输入学生人数:"))
    a=[]
    i=0
    while i<b:
        a.append(float(input("请输入第%d个学生成绩:"%(i+1))))
        i+=1
    print(a)
    print("平均分是：",sum(a)/b)
# score()

# 引用
a = [1,2,3]
b = a
print(a==b)
a[0]=100
print(b)
def changeA(a):
    a[1]=200
changeA(a)
print(b) # a 和 b 指向同一块内存，所以修改 a 中的元素，b 也会跟着变

# for if 语句
a = [12,3,4,6,7,13,21]
b = [12,3,4,6,7,13,21]
newList = [x for x in a] # 列表推导式 [x for x in a] 遍历了 a 中的每个元素，并将这些元素按顺序放入 newList 中
print(newList == b) # 结果是True
newList = [x for x in a if x%2==0] # 相当于js数组的filter函数
print(newList)
# 等价方法
newList = []
for x in a:
    if x%2==0:
        newList.append(x)
print(newList)

# insert方法 修改原列表
a = [1,2,3,4]
print("原始列表:",a)
a.insert(2,5) # 在下标为2的位置插入5
print("insert(2,5):",a)
# 把目标列表的元素添加到本列表尾部,修改原列表
a.extend([5,6])
print("extend([5,6]):",a)
# 在尾部加1个列表,创建新列表
print("a+[7,8]:",a+[7,8])

# 搜索列表
print("100 in a：",100 in a)
print("1 in a：",1 in a)

# 列表复制
b = a.copy()
print(a==b,b)

# 清空列表
a.clear()
del b[:]
print(a,b)